

#ifndef _ORGANO_H

#define _ORGANO_H

#include "Superficie_Triangular.h"
#include "Volumen_Tetraedral.h"
#include "Vertice.h"
#include "Mass_Spring_Model.h"
#include "ArbolRitter.h"


class Organo
{
public:
	//Constructor
	Organo();
	Organo(TipoGeometria enmTipo, char *FilenamePuntos, char *FilenameIndices);

	//Propiedades
	void set_TipoGeometria(const TipoGeometria &enmTipo){enmtipogeometria = enmTipo;}
	TipoGeometria get_TipoGeometria(){return enmtipogeometria;}
	
	void setTipoModelo(const TipoModeloFisico &enmTipo){enmtipomodelo = enmTipo;}
	TipoModeloFisico getTipoModelo(){return enmtipomodelo;}

	void set_FilenamePuntosOrgano(char *filename){charFnameArchivoPtosOrg = filename;}
	void set_FilenameIndicesOrgano(char *filename){charFnameIndsOrg = filename;}
	
	Superificie_Triangular& getSupTriang(){return objSuperficieTriangular;}
	Volumen_Tetraedral& getVolTetra(){return objVolumenTetraedral;}
	Mass_Spring_Model& getMass_Spring_Model(){return objMassSpringModel;}
	ArbolRitter& getArbolRitter(){return objArbolRitter;}

	//Metodos
	void CargarOrgano();
	void CargarJerarquia();
	void CrearModeloFisico();

private:
	//Atributos
	Superificie_Triangular objSuperficieTriangular;
	Volumen_Tetraedral objVolumenTetraedral;
	Mass_Spring_Model objMassSpringModel;
	ArbolRitter objArbolRitter;
	TipoGeometria enmtipogeometria;
	TipoModeloFisico enmtipomodelo;
	char *charFnameArchivoPtosOrg;
	char *charFnameIndsOrg;

};

#endif

